package algorithm.leetcode.simple;

/*
 对于非负整数 X 而言，X 的数组形式是每位数字按从左到右的顺序形成的数组。
 例如，如果 X = 1231，那么其数组形式为 [1,2,3,1]。
 */

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @author jack.wu
 * @version 1.0
 * @date 2021/1/22
 */
public class Question989 {

    public static void main(String[] args) {
        int[] a = {9,9,9,9,9,9,9,9,9,9};
        Question989 question = new Question989();
        List<Integer> addValue = question.addToArrayForm(a, 1);
        System.out.println(addValue);
    }

    /**
     * 思路：逐位相加
     */
    public List<Integer> addToArrayForm(int[] a, int k) {
        List<Integer> ans = new ArrayList<>(10);
        if (a == null) {
            return ans;
        }

        int len = a.length - 1;
        int sum;
        for (int i = len; i >=0; i--) {
            sum = a[i] + k % 10;
            k /= 10;
            if (sum >= 10) {
                k++;
                sum -= 10;
            }
            ans.add(sum);
        }
        // 可能k比数组长度长
        while (k > 0) {
            ans.add(k % 10);
            k /= 10;
        }
        // 由于从尾部添加
        Collections.reverse(ans);
        return ans;
    }
}
